package com.atguigu.single.linklist;

import com.atguigu.single.Node;

/**
 * @ClassName SIngleLinkListTest
 * @DeScription SIngleLinkListTest
 * @Author 剧情再美终是戏
 * @Date 2019/11/19 20:39
 * @Version 1.0
 **/
public class Test {

    public static void main(String[] args) {

        // 实例一个单向列表集合
        SingleLinkList singleLinkList = new SingleLinkList();

        // 实例化几个节点
        Node node2 = new Node(2, "2", "22");
        Node node3 = new Node(3, "3", "33");
        Node node1 = new Node(1, "1", "11");
        Node node5 = new Node(4, "4", "44");
        Node node4 = new Node(5, "5", "55");
        Node node6 = new Node(6, "6", "66");

        // 使用无序方法添加
//        singleLinkList.add(node1);
//        singleLinkList.add(node2);
//        singleLinkList.add(node4);
//        singleLinkList.add(node3);

        // 使用有序方法添加节点
        singleLinkList.addByOrder(node1);
        singleLinkList.addByOrder(node2);
        singleLinkList.addByOrder(node3);
        singleLinkList.addByOrder(node4);
        singleLinkList.addByOrder(node6);
        singleLinkList.addByOrder(node5);

        // 输出
        System.out.println("---------------------------------------------------------");
        System.out.println("用有序方法添加节点输出~~~");
        singleLinkList.list();

        // 修改节点
        node3.setName("333333333");
        node3.setDes("333333333");
        singleLinkList.udate(node3);

        // 修改节点输出
        System.out.println("---------------------------------------------------------");
        System.out.println("修改节点输出~~~");
        singleLinkList.list();

        // 删除节点
//        singleLinkList.del(1);
//        singleLinkList.del(2);
//        singleLinkList.del(3);

        // 删除输出
        System.out.println("---------------------------------------------------------");
        System.out.println("删除输出~~~");
        singleLinkList.list();

        // 查询集合的有效节点数量
        System.out.println("---------------------------------------------------------");
        System.out.println("查询集合的有效节点数量 = " + singleLinkList.size());

        // 查询倒序第k个节点
        int i = 1;
        Node lastNode = singleLinkList.getLastN(i);
        System.out.println("---------------------------------------------------------");
        System.out.printf("获取倒数第%d个结果为%s\n", i, lastNode);


        // 集合反转
//        System.out.println("---------------------------------------------------------");
//        singleLinkList.veversal();
//        System.out.println("集合反转 : ");
//        singleLinkList.list();

        // 反转打印，不影响原来的顺序
        System.out.println("--------------------------------------------");
        System.out.println("反转打印 : ");
        singleLinkList.veversalPrint();

        System.out.println("链表数据顺序输出~~~");
        singleLinkList.list();

    }
}



